# Algorithms & Programming
Big Ideas - Click Here **Big Ideas Covered:** * **Algorithms (AL)** * **Abstraction (AB)** * **Program Development (CRD)** * **Data (DAT)** **Comprehensive Outline** **3.1: Variables and Assignments** * Understanding variables as symbolic names storing values * How assignment statements change values * Naming conventions and best practices * Types of data: integer, float, string, Boolean * **Key Skill:** Create and manipulate variables **3.2: Data Types** * Identifying common data types * Type compatibility and implicit vs explicit casting * Boolean logic and conditionals * **Key Skill:** Reason through variable types and predict outcomes **3.3: Managing Complexity with Procedures (Functions)** * Defining and calling functions * Parameters and return values * Purpose of abstraction in program design * Reducing repetition and improving clarity * **Key Skill:** Write and use procedures to break down problems **3.4: Developing Procedures** * Decomposing problems into subproblems * Sequencing instructions * Identifying reusable logic * **Key Skill:** Create modular and readable code using procedures **3.5: Algorithms** * Understanding algorithms as step-by-step processes * Expressing algorithms in code, pseudocode, or flowcharts * Identifying sequence, selection, and iteration * **Key Skill:** Analyze and write simple algorithms (e.g., search, sort) **3.6: Boolean Expressions and If Statements** * Using `if`, `else if`, and `else` * Relational operators (`==`, `!=`, `>`, `<`, `>=`, `<=`) * Logical operators (`AND`, `OR`, `NOT`) * **Key Skill:** Write conditional logic to control program flow **3.7: Iteration (Loops)** * `for` loops and `while` loops * Loop control: incrementing, breaking, and nested loops * Trace and debug loop execution * **Key Skill:** Use loops to automate repeated tasks **3.8: Combining Elements to Solve Problems** * Integrating variables, conditionals, and loops * Building algorithms to solve complex problems * Emphasis on testing and debugging * **Key Skill:** Synthesize programming elements into working solutions **3.9: Developing Algorithms** * Using existing algorithms or creating new ones * Refining and testing algorithms * Representing algorithms as pseudocode and/or diagrams * **Key Skill:** Plan, document, and implement multi-step logic **3.10: Errors and Testing** * Types of errors: syntax, logic, and runtime * Use of test cases and debugging strategies * Reading error messages and tracebacks * **Key Skill:** Find and fix problems systematically **3.11: Binary Search vs Linear Search** * Linear search: simple, but slower for large data * Binary search: faster, requires sorted data * Tradeoffs in algorithm efficiency * **Key Skill:** Compare search algorithms conceptually and in code **3.12: Comparing Algorithmic Efficiency** * Number of steps vs size of input (n) * Informal analysis of algorithm runtime * Big picture: efficiency impacts user experience and scalability * **Key Skill:** Evaluate which algorithm is “better” and why **3.13: Developing Programs** * Problem identification, solution design * Iterative development process: test, debug, refine * Use of documentation and comments * Collaboration and code review * **Key Skill:** Design and build real programs with purpose **Key Vocabulary**: * Algorithm * Abstraction * Procedure * Loop / Iteration * Boolean * Conditionals * Debugging * Linear/Binary Search * Efficiency * Input/Output * Parameters / Return **Suggested Activities:** * **Debugging challenges** * **Code tracing worksheets** * **Huffman coding (as a stretch topic for algorithms)** * **Block-based to text-based translation (e.g., Scratch to Python)** * **Write and refine a simple calculator or game logic** * **Pseudocode practice and flowcharts**
**AP CSP: Algorithms and Programming Project Packet** Each project includes meaningful challenges in problem-solving, design, data abstraction, and algorithmic thinking, and supports multiple CSP standards. ---
Project 1: Data Visualization Challenge **College Board Learning Objectives:** * DAT-2.D: Describe the purpose of a computational artifact. * DAT-2.E: Create a computational artifact using data. * AAP-2.J: Create programs that use libraries or APIs. **Summary:** Students will analyze a real-world dataset (e.g., climate, sports, health) and build a program that visualizes the data through graphs or interactive charts. They must clean the data, apply algorithms to extract meaning, and generate visual output. **Deliverables:** * Python or JavaScript program with visualization * Annotated code with explanations * 1-page summary of insights from the data **Assessment Rubric:** Project 1: Data Visualization Challenge **College Board Learning Objectives:** * DAT-2.D: Describe the purpose of a computational artifact. * DAT-2.E: Create a computational artifact using data. * AAP-2.J: Create programs that use libraries or APIs. **Summary:** Students will analyze a real-world dataset (e.g., climate, sports, health) and build a program that visualizes the data through graphs or interactive charts. They must clean the data, apply algorithms to extract meaning, and generate visual output. **Deliverables:** * Python or JavaScript program with visualization * Annotated code with explanations * 1-page summary of insights from the data **Assessment Rubric:** | Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning | | -------------------------- | -------------------------------------------------------------- | -------------------------------------- | --------------------------------- | --------------------------------------- | | Data Processing & Accuracy | Data is cleaned, processed, and represented with high accuracy | Data mostly processed correctly | Some data processed, minor errors | Major issues or missing data processing | | Program Functionality | Fully functional and interactive | Mostly functional, minor bugs | Partially functional | Non-functional or incomplete | | Algorithm Use | Well-structured and efficient algorithms | Logical and mostly correct | Some inefficiency or errors | Poor or no algorithmic structure | | Visualization Clarity | Highly clear, informative, and visually appealing | Generally clear and well-organized | Some visual confusion | Unclear or poorly designed | | Communication & Creativity | Excellent explanation and innovative presentation | Clear explanation with some creativity | Basic explanation | Poorly explained or lacking originality | ---
Project 2: Custom Algorithm Design **College Board Learning Objectives:** * AAP-2.C: Develop an algorithm. * AAP-2.G: Express an algorithm using sequencing, selection, and iteration. * AAP-2.K: Evaluate algorithms. **Summary:** Students will identify a real-world or classroom problem and design a custom algorithm to solve it. The algorithm should include clear use of control structures and be implemented in code. **Deliverables:** * Problem description * Flowchart or pseudocode * Working program with documentation * Analysis of algorithm efficiency (qualitative) **Assessment Rubric:** Project 2: Custom Algorithm Design **College Board Learning Objectives:** * AAP-2.C: Develop an algorithm. * AAP-2.G: Express an algorithm using sequencing, selection, and iteration. * AAP-2.K: Evaluate algorithms. **Summary:** Students will identify a real-world or classroom problem and design a custom algorithm to solve it. The algorithm should include clear use of control structures and be implemented in code. **Deliverables:** * Problem description * Flowchart or pseudocode * Working program with documentation * Analysis of algorithm efficiency (qualitative) **Assessment Rubric:** | Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning | | --------------------- | ------------------------------------------ | ------------------------------------------- | -------------------- | ---------------------------------- | | Problem Definition | Clearly articulated and meaningful | Clear and solvable | Vague or simplistic | Unclear or undeveloped | | Algorithm Design | Innovative, efficient, and well-structured | Logical with appropriate control structures | Some logical flaws | Poor structure or missing elements | | Code Implementation | Clean, correct, and complete | Mostly correct with some issues | Partially functional | Incomplete or not working | | Algorithm Explanation | Insightful and clearly communicates logic | Reasonably clear explanation | Limited clarity | Missing or incorrect explanation | ---
Project 3: Text-Based Game Development **College Board Learning Objectives:** * AAP-2.I: Use procedures to organize code. * AAP-2.M: Develop programs that use lists. * AAP-2.N: Use procedures that operate on data in lists. **Summary:** Students will design and build a text-based adventure game using procedures and data structures. They will implement lists, control flow, and functions to support reusable code and dynamic behavior. **Deliverables:** * Fully functional game (e.g., Python, Java) * Code with at least two custom procedures and one list-based mechanic * Game map or flow diagram **Assessment Rubric:** Project 3: Text-Based Game Development **College Board Learning Objectives:** * AAP-2.I: Use procedures to organize code. * AAP-2.M: Develop programs that use lists. * AAP-2.N: Use procedures that operate on data in lists. **Summary:** Students will design and build a text-based adventure game using procedures and data structures. They will implement lists, control flow, and functions to support reusable code and dynamic behavior. **Deliverables:** * Fully functional game (e.g., Python, Java) * Code with at least two custom procedures and one list-based mechanic * Game map or flow diagram **Assessment Rubric:** | Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning | | ------------------------ | ----------------------------------------------------------- | -------------------------------- | --------------------------- | -------------------------------------- | | Game Logic & Playability | Highly engaging and bug-free | Playable with minor bugs | Playable but limited | Unplayable or incomplete | | Procedures & Lists | Uses multiple reusable procedures and well-integrated lists | Appropriate use of both elements | Limited or inconsistent use | Missing procedures or list integration | | Code Structure | Well-organized and readable | Mostly clear organization | Some disorganization | Hard to follow or messy | | Creativity & Innovation | Highly original and engaging concept | Some creativity | Basic or conventional | Lacking originality | ---
Project 4: Debugging & Code Review Simulation **College Board Learning Objectives:** * AAP-1.C: Identify and correct errors in programs. * AAP-2.F: Evaluate expressions that use arithmetic operators. * AAP-2.H: Determine the result of program execution. **Summary:** Students will be given a broken or inefficient program. Their job is to debug it, improve it, and write a peer review report explaining how and why they made their changes. **Deliverables:** * Corrected source code * Side-by-side comparison with the original * Peer review report (1 page) **Assessment Rubric:** Project 4: Debugging & Code Review Simulation **College Board Learning Objectives:** * AAP-1.C: Identify and correct errors in programs. * AAP-2.F: Evaluate expressions that use arithmetic operators. * AAP-2.H: Determine the result of program execution. **Summary:** Students will be given a broken or inefficient program. Their job is to debug it, improve it, and write a peer review report explaining how and why they made their changes. **Deliverables:** * Corrected source code * Side-by-side comparison with the original * Peer review report (1 page) **Assessment Rubric:** | Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning | | ------------------ | ------------------------------------------- | --------------------------------------- | ------------------------------------- | -------------------------------- | | Bug Identification | All bugs correctly identified and explained | Most bugs identified | Some bugs found | Few or no bugs identified | | Debugging Quality | Efficient and optimal fixes applied | Functional fixes with some inefficiency | Fixes with side effects or redundancy | Buggy or no fixes applied | | Code Comparison | Clear and complete before/after comparison | Some comparison shown | Basic or unclear comparison | No clear comparison | | Review Explanation | Detailed reasoning and reflection | Some reasoning included | Minimal or vague explanation | Missing or incorrect explanation | ---
Project 5: Algorithm Museum (Explainer Showcase) **College Board Learning Objectives:** * AAP-2.L: Explain how algorithms reflect different approaches to solving problems. * CRD-2.C: Identify inputs and outputs of a program. * AAP-2.K: Evaluate algorithms. **Summary:** Students select a classic algorithm (e.g., sorting, searching, pathfinding) and create an interactive or visual explainer. They must describe inputs/outputs, explain its function, and compare it with an alternative. **Deliverables:** * Explainer artifact (video, animation, poster, slideshow, etc.) * Input/output examples * Comparative write-up **Assessment Rubric:** Project 5: Algorithm Museum (Explainer Showcase) **College Board Learning Objectives:** * AAP-2.L: Explain how algorithms reflect different approaches to solving problems. * CRD-2.C: Identify inputs and outputs of a program. * AAP-2.K: Evaluate algorithms. **Summary:** Students select a classic algorithm (e.g., sorting, searching, pathfinding) and create an interactive or visual explainer. They must describe inputs/outputs, explain its function, and compare it with an alternative. **Deliverables:** * Explainer artifact (video, animation, poster, slideshow, etc.) * Input/output examples * Comparative write-up **Assessment Rubric:** | Criteria | 4 - Excellent | 3 - Proficient | 2 - Developing | 1 - Beginning | | ----------------------- | ----------------------------------------------- | ------------------------ | ------------------------------ | ------------------------------------- | | Algorithm Explanation | Clear, deep explanation with visuals/examples | Mostly clear explanation | Some confusion or gaps | Inaccurate or unclear explanation | | Inputs & Outputs | Well-explained with accurate examples | Mostly correct | Minor errors or omissions | Missing or incorrect examples | | Comparison & Evaluation | Thoughtful comparison of two or more approaches | Adequate comparison | Limited insight or explanation | No meaningful comparison | | Presentation Quality | Polished, creative, and informative | Clear and informative | Somewhat unclear | Hard to understand or poorly executed | ---